﻿using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using ProjectA.Controls;
using System.ComponentModel;

namespace ProjectA.Modules.Configuracion.Proyectos
{
    public class cWindowProyectos : cWindow
    {
        public cWindow panelProyectosOpciones;
        private cWindow panelProyectosEstructura;
        public cCheckBox ckbProyectosEstructuraEsitem;
        public cDateTimePicker dtpProyectosOpcionesFechaIncio;
        public cDateTimePicker dtpProyectosOpcionesFecha;
        private cComboBox cbProyectosOpcionesEstado;
        public TreeView tvProyectos;
        wsGeneral.WsGeneral wsGeneral;
        private eModo ModoActual { get; set; }
        int iIdCentro, iRegistroId;
    
        public cWindowProyectos(frmPrincipal frmPrincipal, Point pPoint, Size sSize)
        {
            this.frmPrincipal = frmPrincipal;
            this.BackColor = Color.Transparent;
            this.Location = pPoint;
            this.Size = sSize;
            InitializeComponent();
            InitComponent();
            wsGeneral = new wsGeneral.WsGeneral();

            this.btProyectosEstructura.Checked = true;
            dsEstructura = new DataSet();        
        }

        public void cargar()
        {
            try
            {
                tvProyectos.Nodes.Clear();
                if (cbPrincipal.SelectedIndex == cbPrincipal.Items.Count - 1) //Adición
                {
                    string sErr = "";
                    btProyectosOpciones.Checked = true;
                    tbProyectosOpcionesNombre.Text = "";
                    btProyectosOpcionesEliminar.Enabled = false;
                    btProyectosEstructura.Enabled = false;
                    ModoActual = eModo.Adición;
                    MaestroId = 0;
                    tbProyectosOpcionesNumero.Text = "";
                    tbProyectosOpcionesDescripcion.Text ="";
                    dtpProyectosOpcionesFecha.Value=DateTime.Now;
                    dtpProyectosOpcionesFechaIncio.Value= DateTime.Now;
                    cbProyectosOpcionesEstado.SelectedIndex=-1;
                    DataSet dsProyecto = new DataSet();
                    wsGeneral.GetCentroCostos(0, null, null, null, null, null, out dsProyecto, out sErr);
                    bsProyectos.DataSource = dsProyecto.Tables[0];
                    dsEstructura.Clear();
                    dsPrincipal.Clear();
                    dsProyecto.Clear();
                }

                else if ((cbPrincipal.SelectedIndex >= 0) && (cbPrincipal.SelectedIndex != cbPrincipal.Items.Count - 1))
                {
                    string sErr = "";
                    dsEstructura = new DataSet();
                    DataSet dsProyecto = new DataSet();
                    if (wsGeneral.GetCentroCostos(CentroDeCostosId, null, null, null, null, null, out dsProyecto, out sErr))
                    {
                        bsProyectos.DataSource = dsProyecto.Tables[0];
                        //bsProyectos.DataMember = dsProyecto.Tables[0].TableName;
                        bool bGetEstructura = wsGeneral.GetEstructura(null, CentroDeCostosId, null, null, null, null, null, out dsEstructura, out sErr);
                        if ((bGetEstructura) && (dsEstructura.Tables.Count > 0))
                        {
                            btProyectosEstructura.Checked = true;
                            ProyectosCargarEstructura(0, null);
                            tvProyectos = new cTreeView();
                            tvProyectos.ExpandAll();
                            iIdCentro = CentroDeCostosId;
                            ModoActual = eModo.Modificación;
                        }
                        else if (!bGetEstructura)
                        {
                            MessageBox.Show("Falló la conexión con la base de datos." + sErr);
                        }
                    }
                }
            }
            catch (Exception Exce)
            {
                MessageBox.Show("Falló al abrir modulo de proyectos." + Exce.Message);
            }
        }

        enum eModo
        {
            Ninguno = 0,
            Adición = 1,
            Modificación = 2,
            Eliminación = 3
        }

        public int CentroDeCostosId
        {
            get
            {
                if (frmPrincipal.cPage_General != null)
                    //if (int.Parse(frmPrincipal.cPage_General.cbCabeceraSeleccionarProyecto.SelectedValue != -1)

                    return int.Parse(frmPrincipal.cPage_General.cbCabeceraSeleccionarProyecto.SelectedValue.ToString());

                else
                    return 0;
            }
        }

        public ComboBox cbPrincipal
        {
            get
            {
                if (frmPrincipal.cPage_General != null)
                    return frmPrincipal.cPage_General.cbCabeceraSeleccionarProyecto;
                else
                    return null;
            }

        }

        class NodoTag
        {
            public int EstructuraID { get; set; }
            public bool EsItem { get; set; }
        }

        private TreeNode NodoSeleccionado { get; set; }
        private int NivelDeNodo { get; set; }
        private int MaestroId { get; set; }
        private string NombreEstructura { get; set; }
        private string ProyectosAccion { get; set; }
        DataSet dsEstructura;

        private int IdCentro { get { return iIdCentro; } set { iIdCentro = value; } }
        private int RegistroId { get { return iRegistroId; } set { iRegistroId = value; } }

        private void EstructuraAgregarNodo()
        {
            if (NodoSeleccionado != null)
            {
                btProyectosEstructuraAgregar.Enabled = false;
                btProyectosEstructuraModificar.Enabled = false;
                btProyectosEstructuraEliminarNodo.Enabled = false;
                tbProyectosEstructuraNombreElementoNivel.Visible = true;
                tbProyectosEstructuraNumeroElementoNivel.Visible = true;
                tbProyectosEstructuraNombreElementoNivel.Enabled = true;                
                tbProyectosEstructuraNumeroElementoNivel.Enabled = true;
                tbProyectosEstructuraNombreElementoNivel.Text = "";
                tbProyectosEstructuraNumeroElementoNivel.Text = "";
                lProyectosEstructuraNombreElementoNivel.Visible = true;
                ckbProyectosEstructuraEsitem.Visible = true;
                ModoActual = eModo.Adición;
                btProyectosEstructuraAgregarNivelOk.Visible = true;
                tbProyectosEstructuraNumeroElementoNivel.Select();
            }
        }

        #region Opciones

        private void btProyectosOpcionesGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                string sErr = "";
                if (ModoActual == eModo.Adición)
                {
                    bool bAddCentroCostos = wsGeneral.AddCentroCostos(tbProyectosOpcionesNombre.Text, tbProyectosOpcionesDescripcion.Text, dtpProyectosOpcionesFechaIncio.Value, dtpProyectosOpcionesFecha.Value, cbProyectosOpcionesEstado.SelectedIndex + 1, out iIdCentro, out sErr);
                    bool bAddEstructura = wsGeneral.AddEstructura(iIdCentro, 0, 0, 1, tbProyectosOpcionesNombre.Text, null, out iRegistroId, out sErr);//Cambiar a procedimiento almacenado
                    if (bAddCentroCostos)
                    {
                        TreeNode tnNuevo = new TreeNode();
                        tnNuevo.Name = tbProyectosOpcionesNombre.Text;
                        tnNuevo.Text = tbProyectosOpcionesNombre.Text;
                        NodoTag oNodoTag = new NodoTag();
                        oNodoTag.EstructuraID = iRegistroId;
                        oNodoTag.EsItem = false;
                        tnNuevo.Tag = oNodoTag;
                        tvProyectos.Nodes.Add(tnNuevo);
                        tvProyectos.SelectedNode = tvProyectos.Nodes[0];
                        tvProyectos.Select();
                        btProyectosEstructura.Checked = true;
                        ModoActual = eModo.Modificación;
                        EstructuraAgregarNodo();
                    }
                    else
                        MessageBox.Show("No se pudo guardar el Centro de costos. " + sErr);
                }
                else if (ModoActual == eModo.Modificación)
                {
                    if (wsGeneral.ModifyCentroCostos(CentroDeCostosId, tbProyectosOpcionesNombre.Text, tbProyectosOpcionesDescripcion.Text, dtpProyectosOpcionesFechaIncio.Value, dtpProyectosOpcionesFecha.Value, cbProyectosOpcionesEstado.SelectedIndex, out sErr))
                        MessageBox.Show("Modificación Exitosa");
                    else
                        MessageBox.Show("No se pudo guardar los cambios. " + sErr);
                }
            }
            catch (Exception Exce)
            {
                MessageBox.Show("Falló al guardar proyectos." + Exce.Message);
            }
        }

        #endregion

        #region Estructura

        private void btProyectosEstructuraAgregarNivelOk_Click(object sender, EventArgs e)
        {
            try
            {
                string sErrorEnMetodoWeb = "";
                int iNivel = 0;
                if (NodoSeleccionado != null)
                {
                    if (ModoActual == eModo.Adición)
                    {
                        if (!ckbProyectosEstructuraEsitem.Checked)
                            iNivel = NodoSeleccionado.Level + 2;
                        NodoTag oNodoTag = new NodoTag();
                        oNodoTag = NodoSeleccionado.Tag as NodoTag;
                        if (wsGeneral.AddEstructura(iIdCentro, oNodoTag.EstructuraID, NodoSeleccionado.Nodes.Count, iNivel, tbProyectosEstructuraNombreElementoNivel.Text, tbProyectosEstructuraNumeroElementoNivel.Text, out iRegistroId, out sErrorEnMetodoWeb))
                        {
                            TreeNode tnNuevo = new TreeNode();
                            oNodoTag = new NodoTag();
                            oNodoTag.EstructuraID = iRegistroId;
                            oNodoTag.EsItem = ckbProyectosEstructuraEsitem.Checked;
                            tnNuevo.Name = tbProyectosEstructuraNombreElementoNivel.Text;
                            tnNuevo.Text = tbProyectosEstructuraNumeroElementoNivel.Text + "-" + tbProyectosEstructuraNombreElementoNivel.Text;
                            tnNuevo.Tag = oNodoTag;
                            NodoSeleccionado.Nodes.Add(tnNuevo);
                            tvProyectos.SelectedNode = NodoSeleccionado.Nodes[NodoSeleccionado.Nodes.Count - 1];
                        }
                        else
                            MessageBox.Show("No se puso agregar estructura:" + sErrorEnMetodoWeb);
                    }
                    else if (ModoActual == eModo.Modificación)
                    {
                        NodoTag oNodoTag = new NodoTag();
                        oNodoTag = NodoSeleccionado.Tag as NodoTag;
                        NodoTag oNodoParentTag = new NodoTag();
                        oNodoTag = NodoSeleccionado.Parent.Tag as NodoTag;
                        oNodoTag.EsItem = ckbProyectosEstructuraEsitem.Checked;
                        NodoSeleccionado.Tag = oNodoTag;
                        int iNivelActaual = NodoSeleccionado.Level;
                        if (oNodoTag.EsItem)
                        {
                            iNivelActaual = 0;
                        }
                        if (wsGeneral.ModifyEstructura(oNodoTag.EstructuraID, iIdCentro, oNodoParentTag.EstructuraID, NodoSeleccionado.Index, iNivelActaual, tbProyectosEstructuraNombreElementoNivel.Text, tbProyectosEstructuraNumeroElementoNivel.Text, out sErrorEnMetodoWeb))
                        {
                            NodoSeleccionado.Text = tbProyectosEstructuraNumeroElementoNivel.Text + "-" + tbProyectosEstructuraNombreElementoNivel.Text;
                            tvProyectos.SelectedNode = NodoSeleccionado;
                            tbProyectosEstructuraNodoActual.Text = tbProyectosEstructuraNumeroElementoNivel.Text + "-" + tbProyectosEstructuraNombreElementoNivel.Text;
                        }
                        else
                            MessageBox.Show("No se puso agregar estructura:" + sErrorEnMetodoWeb);
                    }
                    tvProyectos.Select();
                }
                tvProyectos.ExpandAll();
                btProyectosEstructuraAgregar.Enabled = true;
                btProyectosEstructuraModificar.Enabled = true;
                btProyectosEstructuraEliminarNodo.Enabled = true;
                tbProyectosEstructuraNombreElementoNivel.Enabled = false;
                tbProyectosEstructuraNumeroElementoNivel.Enabled = false;
                ModoActual = eModo.Ninguno;
                btProyectosEstructuraAgregarNivelOk.Visible = false;
                tbProyectosEstructuraNombreElementoNivel.Text = "";
                tbProyectosEstructuraNumeroElementoNivel.Text = "";
            }
            catch (Exception Exce)
            {
                MessageBox.Show("Error al agregar nodo. " + Exce.Message);
            }
        }
        private void btProyectosEstructuraAgregar_Click(object sender, EventArgs e)
        {
            EstructuraAgregarNodo();
        }
        private void btProyectosEstructuraModificar_Click(object sender, EventArgs e)
        {
            if (NodoSeleccionado != null)
            {
                btProyectosEstructuraAgregar.Enabled = false;
                btProyectosEstructuraModificar.Enabled = false;
                btProyectosEstructuraEliminarNodo.Enabled = false;
                tbProyectosEstructuraNombreElementoNivel.Visible = true;
                tbProyectosEstructuraNumeroElementoNivel.Visible = true;
                tbProyectosEstructuraNombreElementoNivel.Enabled = true;
                tbProyectosEstructuraNumeroElementoNivel.Enabled = true;
                tbProyectosEstructuraNombreElementoNivel.Text = NodoSeleccionado.Text.Split('-')[1];
                tbProyectosEstructuraNumeroElementoNivel.Text = NodoSeleccionado.Text.Split('-')[0];
                lProyectosEstructuraNombreElementoNivel.Visible = true;
                ckbProyectosEstructuraEsitem.Visible = true;
                ModoActual = eModo.Modificación;
                btProyectosEstructuraAgregarNivelOk.Visible = true;
                tbProyectosEstructuraNombreElementoNivel.Select();
            }
        }
        private void btProyectosEstructuraEliminarNodo_Click(object sender, EventArgs e)
        {
            try
            {
                string sErr = "";
                if (NodoSeleccionado != null)
                {
                    ModoActual = eModo.Eliminación;
                    NodoTag oNodoTag = new NodoTag();
                    oNodoTag = NodoSeleccionado.Tag as NodoTag;
                    if (wsGeneral.DeleteEstructura(oNodoTag.EstructuraID, out sErr))//Eliminar nodos anidados desde base de datos
                    {
                        for (int iCount = 0; iCount < NodoSeleccionado.Nodes.Count; iCount++)
                        {
                            oNodoTag = new NodoTag();
                            oNodoTag = NodoSeleccionado.Nodes[iCount].Tag as NodoTag;
                            wsGeneral.DeleteEstructura(oNodoTag.EstructuraID, out sErr);
                        }
                        NodoSeleccionado.Remove();
                        MessageBox.Show("Eliminación Exitosa");
                    }
                }
            }
            catch (Exception Exce)
            {
                MessageBox.Show("Error al eliminar nodo. " + Exce.Message);
            }
        }
        private void tvProyectos_AfterSelect(object sender, TreeViewEventArgs e)
        {
            NodoSeleccionado = e.Node;
            if (NodoSeleccionado.Level == 0)
            {
                btProyectosEstructuraEliminarNodo.Enabled = false;
                btProyectosEstructuraModificar.Enabled = false;
            }
            else
            {
                btProyectosEstructuraEliminarNodo.Enabled = true;
                btProyectosEstructuraModificar.Enabled = true;
            }
            NodoTag oNodeTag = new NodoTag();
            oNodeTag = (NodoTag)NodoSeleccionado.Tag;
            if (oNodeTag.EsItem)
                ckbProyectosEstructuraEsitem.Checked = true;
            else
                ckbProyectosEstructuraEsitem.Checked = false;
            tbProyectosEstructuraNodoActual.Text = NodoSeleccionado.Text;
            lProyectosEstructuraNombreElementoNivel.Text = "Nuevo elemento de nivel " + NodoSeleccionado.Level.ToString();
        }


        private void tbProyectosEstructuraNombreElementoNivel_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)(Keys.Enter))
            {
                e.Handled = true;
                btProyectosEstructuraAgregarNivelOk_Click(null, null);
            }
        }
        private void ProyectosCargarEstructura(int iPadre, TreeNode tnPadre)
        {
            DataView dataViewHijos = new DataView(dsEstructura.Tables[0]);
            dataViewHijos.RowFilter = dsEstructura.Tables[0].Columns["MaestroID"].ColumnName + " = " + iPadre;
            foreach (DataRowView dataRowCurrent in dataViewHijos)
            {
                TreeNode nuevoNodo = new TreeNode();
                NodoTag oNodoTag = new NodoTag();
                oNodoTag.EstructuraID = Convert.ToInt32(dataRowCurrent["ID"]);
                if ((Convert.ToInt32(dataRowCurrent["Nivel"])) == 0)
                    oNodoTag.EsItem = true;
                else
                    oNodoTag.EsItem = false;
                nuevoNodo.Text = dataRowCurrent["Descripcion"].ToString();
                nuevoNodo.Name = dataRowCurrent["Descripcion"].ToString();
                nuevoNodo.Tag = oNodoTag;
                if (tnPadre == null)
                    tvProyectos.Nodes.Add(nuevoNodo);
                else
                    tnPadre.Nodes.Add(nuevoNodo);
                ProyectosCargarEstructura(Int32.Parse(dataRowCurrent["ID"].ToString()), nuevoNodo);
            }
        }

        #endregion

        private void btProyectosEstructura_CheckedChanged(object sender, EventArgs e)
        {
            if (btProyectosEstructura.Checked)
            {
                btProyectosOpciones.Checked = false;
                btProyectosEstructura.Enabled = false;
                btProyectosOpciones.Enabled = true;
                panelProyectosEstructura.Visible = true;
                panelProyectosOpciones.Visible = false;
            }
        }

        private void btProyectosOpciones_CheckedChanged(object sender, EventArgs e)
        {
            if (btProyectosOpciones.Checked)
            {
                btProyectosEstructura.Checked = false;
                btProyectosEstructura.Enabled = true;
                btProyectosOpciones.Enabled = false;
                panelProyectosEstructura.Visible = false;
                panelProyectosOpciones.Visible = true;
            }
        }

        private void InitComponent()
        {
            // ----------------------------------------------------------------------------------------------------------------------------------------------------------
            // Controles de la página
            // ----------------------------------------------------------------------------------------------------------------------------------------------------------
            this.btProyectosEstructura = new cButtonToggle(new Point(426, 13), new Size(160, 39), new EventHandler(btProyectosEstructura_CheckedChanged), Properties.Resources.bt_tag_estructura_1, Properties.Resources.bt_tag_estructura_2, Properties.Resources.bt_tag_estructura_3, Properties.Resources.bt_tag_estructura_4);
            this.btProyectosOpciones = new cButtonToggle(new Point(585, 13), new Size(160, 39), new EventHandler(btProyectosOpciones_CheckedChanged), Properties.Resources.bt_tag_opciones_1, Properties.Resources.bt_tag_opciones_2, Properties.Resources.bt_tag_opciones_3, Properties.Resources.bt_tag_opciones_4);
            this.btProyectosEstructuraAgregarNivelOk = new cButton(new Point(100, 247), new Size(119, 46), new EventHandler(btProyectosEstructuraAgregarNivelOk_Click), Properties.Resources.bt_tag_opciones_ok_1, Properties.Resources.bt_tag_opciones_ok_2, Properties.Resources.bt_tag_opciones_ok_3, Properties.Resources.bt_tag_opciones_ok_4);
            this.btProyectosEstructuraAgregar = new cButton(new Point(22, 329), new Size(79, 53), new EventHandler(btProyectosEstructuraAgregar_Click), Properties.Resources.bt_tag_opciones_agregar_1, Properties.Resources.bt_tag_opciones_agregar_2, Properties.Resources.bt_tag_opciones_agregar_3, Properties.Resources.bt_tag_opciones_agregar_4);
            this.btProyectosEstructuraModificar = new cButton(new Point(120, 329), new Size(79, 53), new EventHandler(btProyectosEstructuraModificar_Click), Properties.Resources.bt_tag_opciones_modificar_1, Properties.Resources.bt_tag_opciones_modificar_2, Properties.Resources.bt_tag_opciones_modificar_3, Properties.Resources.bt_tag_opciones_modificar_4);
            this.btProyectosEstructuraEliminarNodo = new cButton(new Point(219, 329), new Size(79, 53), new EventHandler(btProyectosEstructuraEliminarNodo_Click), Properties.Resources.bt_tag_opciones_eliminar_1, Properties.Resources.bt_tag_opciones_eliminar_2, Properties.Resources.bt_tag_opciones_eliminar_3, Properties.Resources.bt_tag_opciones_eliminar_4);

            this.btProyectosOpcionesGuardar = new cButton(new Point(28, 354), new Size(119, 45), new EventHandler(btProyectosOpcionesGuardar_Click), Properties.Resources.bt_proyectos_opciones_guardar_1, Properties.Resources.bt_proyectos_opciones_guardar_2, Properties.Resources.bt_proyectos_opciones_guardar_3, Properties.Resources.bt_proyectos_opciones_guardar_4);
            this.btProyectosOpcionesEliminar = new cButton(new Point(173, 354), new Size(119, 45), null, Properties.Resources.bt_proyectos_opciones_eliminar_1, Properties.Resources.bt_proyectos_opciones_eliminar_2, Properties.Resources.bt_proyectos_opciones_eliminar_3, Properties.Resources.bt_proyectos_opciones_eliminar_4);
            this.lProyectosOpcionesNombre = new cLabel(new Point(40, 9), new Size(64, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))),null, "Nombre");
            this.lProyectosOpcionesDescripcion = new cLabel(new Point(40, 69), new Size(93, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Descripción");
            this.lProyectosOpcionesFechaInicio = new cLabel(new Point(40, 159), new Size(115, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Fecha de inicio");
            this.lProyectosOpcionesFechaFinalizacion = new cLabel(new Point(40, 219), new Size(224, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Fecha estimada de finalización");
            this.lProyectosOpcionesEstado = new cLabel(new Point(40, 279), new Size(57, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Estado");
            this.tbProyectosOpcionesNombre = new cTextBox(new Point(40, 35), new Size(180, 25), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);
            this.tbProyectosOpcionesNombre.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProyectos, "Nombre", true));
            this.tbProyectosOpcionesNumero = new cTextBox(new Point(40, 35), new Size(1, 1), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);
            this.tbProyectosOpcionesNumero.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProyectos, "ID", true));
            this.tbProyectosOpcionesDescripcion = new cTextBox(new Point(40, 95), new Size(240, 55), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);
            this.tbProyectosOpcionesDescripcion.Multiline = true;
            this.tbProyectosOpcionesDescripcion.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProyectos, "Descripcion", true));

            this.lProyectosEstructuraNodoActual = new cLabel(new Point(114, 40), new Size(92, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Nodo Actual");
            this.lProyectosEstructuraNombreElementoNivel = new cLabel(new Point(62, 120), new Size(198, 20), new Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))), Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154))))), null, "Nuevo elemento de nivel 0");
            this.tbProyectosEstructuraNodoActual = new cTextBox(new Point(40, 70), new Size(240, 25), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);
            this.tbProyectosEstructuraNodoActual.ReadOnly = true;
            this.tbProyectosEstructuraNombreElementoNivel = new cTextBox(new Point(110, 150), new Size(170, 25), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);
            this.tbProyectosEstructuraNumeroElementoNivel = new cTextBox(new Point(40, 150), new Size(60, 25), new Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))), null, null);

            // tvProyectos
            this.tvProyectos.Location = new Point(69, 13);
            this.tvProyectos.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvProyectos_AfterSelect);

            // ckbProyectosEstructuraEsitem
            this.ckbProyectosEstructuraEsitem.Location = new Point(48, 200);

            // dtpProyectosOpcionesFechaIncio
            this.dtpProyectosOpcionesFechaIncio.Location = new Point(40,185);
            this.dtpProyectosOpcionesFechaIncio.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.bsProyectos, "FechaInicio", true));

            // dtpProyectosOpcionesFecha
            this.dtpProyectosOpcionesFecha.Location = new Point(40, 245);
            this.dtpProyectosOpcionesFecha.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.bsProyectos, "FechaFinal", true));

            // cbProyectosOpcionesEstado
            this.cbProyectosOpcionesEstado.Location = new Point(40, 305);
            this.cbProyectosOpcionesEstado.DataBindings.Add(new System.Windows.Forms.Binding("SelectedIndex", this.bsProyectos, "Estado", true));

            this.Controls.Add(btProyectosEstructura);
            this.Controls.Add(btProyectosOpciones);
            this.Controls.Add(tvProyectos);

            // ----------------------------------------------------------------------------------------------------------------------------------------------------------
            // Windows de la página
            // ----------------------------------------------------------------------------------------------------------------------------------------------------------
            // panelProyectosEstructura
            this.panelProyectosEstructura.Location = new Point(426, 52);
            this.panelProyectosEstructura.Visible = false;
            this.panelProyectosEstructura.Controls.Add(btProyectosEstructuraAgregarNivelOk);
            this.panelProyectosEstructura.Controls.Add(btProyectosEstructuraAgregar);
            this.panelProyectosEstructura.Controls.Add(btProyectosEstructuraModificar);
            this.panelProyectosEstructura.Controls.Add(btProyectosEstructuraEliminarNodo);
            this.panelProyectosEstructura.Controls.Add(lProyectosEstructuraNodoActual);
            this.panelProyectosEstructura.Controls.Add(lProyectosEstructuraNombreElementoNivel); 
            this.panelProyectosEstructura.Controls.Add(ckbProyectosEstructuraEsitem);
            this.panelProyectosEstructura.Controls.Add(tbProyectosEstructuraNodoActual);
            this.panelProyectosEstructura.Controls.Add(tbProyectosEstructuraNombreElementoNivel);
            this.panelProyectosEstructura.Controls.Add(tbProyectosEstructuraNumeroElementoNivel);

            // panelProyectosOpciones
            this.panelProyectosOpciones.Location = new Point(426,52);
            //this.panelProyectosOpciones.Visible = false;
            this.panelProyectosOpciones.Controls.Add(btProyectosOpcionesGuardar);
            this.panelProyectosOpciones.Controls.Add(btProyectosOpcionesEliminar);
            this.panelProyectosOpciones.Controls.Add(lProyectosOpcionesNombre);
            this.panelProyectosOpciones.Controls.Add(lProyectosOpcionesDescripcion);
            this.panelProyectosOpciones.Controls.Add(lProyectosOpcionesFechaInicio);
            this.panelProyectosOpciones.Controls.Add(lProyectosOpcionesFechaFinalizacion);
            this.panelProyectosOpciones.Controls.Add(lProyectosOpcionesEstado);
            this.panelProyectosOpciones.Controls.Add(tbProyectosOpcionesNombre);
            this.panelProyectosOpciones.Controls.Add(tbProyectosOpcionesNumero);
            this.panelProyectosOpciones.Controls.Add(tbProyectosOpcionesDescripcion);
            this.panelProyectosOpciones.Controls.Add(dtpProyectosOpcionesFechaIncio);
            this.panelProyectosOpciones.Controls.Add(dtpProyectosOpcionesFecha);
            this.panelProyectosOpciones.Controls.Add(cbProyectosOpcionesEstado);


            this.Controls.Add(panelProyectosOpciones);
            this.Controls.Add(panelProyectosEstructura);
        }

        public cButtonToggle btProyectosEstructura { get; set; }
        public cButtonToggle btProyectosOpciones { get; set; }
        public cButton btProyectosEstructuraAgregarNivelOk { get; set; }
        public cButton btProyectosEstructuraAgregar { get; set; }
        public cButton btProyectosEstructuraModificar { get; set; }
        public cButton btProyectosEstructuraEliminarNodo { get; set; }

        public cButton btProyectosOpcionesGuardar { get; set; }
        public cButton btProyectosOpcionesEliminar { get; set; }
        public cLabel lProyectosOpcionesNombre { get; set; }
        public cLabel lProyectosOpcionesDescripcion { get; set; }
        public cLabel lProyectosOpcionesFechaInicio { get; set; }
        public cLabel lProyectosOpcionesFechaFinalizacion { get; set; }
        public cLabel lProyectosOpcionesEstado { get; set; }
        public cTextBox tbProyectosOpcionesNombre { get; set; }
        public cTextBox tbProyectosOpcionesNumero { get; set; }
        public cTextBox tbProyectosOpcionesDescripcion { get; set; }

        public cLabel lProyectosEstructuraNodoActual { get; set; }
        public cLabel lProyectosEstructuraNombreElementoNivel { get; set; }
        public cTextBox tbProyectosEstructuraNodoActual { get; set; }
        public cTextBox tbProyectosEstructuraNombreElementoNivel { get; set; }
        public cTextBox tbProyectosEstructuraNumeroElementoNivel { get; set; }

        private BindingSource bsProyectos;
        private IContainer components;
        private DataSets.dsPrincipal dsPrincipal;

        //FormaPrincipal
        private frmPrincipal frmPrincipal { get; set; }

        private void InitializeComponent()
        {
            this.tvProyectos = new TreeView();
            this.components = new System.ComponentModel.Container();
            this.bsProyectos = new System.Windows.Forms.BindingSource(this.components);
            this.dsPrincipal = new ProjectA.DataSets.dsPrincipal();
            this.panelProyectosOpciones = new ProjectA.Controls.cWindow();
            this.panelProyectosEstructura = new ProjectA.Controls.cWindow();
            this.ckbProyectosEstructuraEsitem = new ProjectA.Controls.cCheckBox();
            this.dtpProyectosOpcionesFechaIncio = new ProjectA.Controls.cDateTimePicker();
            this.dtpProyectosOpcionesFecha = new ProjectA.Controls.cDateTimePicker();
            this.cbProyectosOpcionesEstado = new ProjectA.Controls.cComboBox();
            ((System.ComponentModel.ISupportInitialize)(this.bsProyectos)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dsPrincipal)).BeginInit();
            this.SuspendLayout();
            // 
            // bsProyectos
            // 
            this.bsProyectos.DataMember = "Centro de Costos";
            this.bsProyectos.DataSource = this.dsPrincipal;
            // 
            // dsPrincipal
            // 
            this.dsPrincipal.DataSetName = "dsPrincipal";
            this.dsPrincipal.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
            // 
            // tvProyectos
            // 
            this.tvProyectos.BackColor = System.Drawing.SystemColors.Window;
            this.tvProyectos.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.tvProyectos.LineColor = System.Drawing.Color.Empty;
            this.tvProyectos.Location = new System.Drawing.Point(0, 0);
            this.tvProyectos.Margin = new System.Windows.Forms.Padding(0);
            this.tvProyectos.Name = "tvProyectos";
            this.tvProyectos.Size = new System.Drawing.Size(338, 465);
            this.tvProyectos.TabIndex = 0;
            // 
            // panelProyectosOpciones
            // 
            this.panelProyectosOpciones.ImageBackGroundPage = global::ProjectA.Properties.Resources.bg_win_trans_tabControl_Proyectos;
            this.panelProyectosOpciones.Location = new System.Drawing.Point(0, 0);
            this.panelProyectosOpciones.Margin = new System.Windows.Forms.Padding(0);
            this.panelProyectosOpciones.Name = "panelProyectosOpciones";
            this.panelProyectosOpciones.Size = new System.Drawing.Size(319, 426);
            this.panelProyectosOpciones.TabIndex = 0;
            // 
            // panelProyectosEstructura
            // 
            this.panelProyectosEstructura.ImageBackGroundPage = global::ProjectA.Properties.Resources.bg_win_trans_tabControl_Proyectos;
            this.panelProyectosEstructura.Location = new System.Drawing.Point(0, 0);
            this.panelProyectosEstructura.Margin = new System.Windows.Forms.Padding(0);
            this.panelProyectosEstructura.Name = "panelProyectosEstructura";
            this.panelProyectosEstructura.Size = new System.Drawing.Size(319, 426);
            this.panelProyectosEstructura.TabIndex = 0;
            // 
            // ckbProyectosEstructuraEsitem
            // 
            this.ckbProyectosEstructuraEsitem.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.ckbProyectosEstructuraEsitem.AutoSize = true;
            this.ckbProyectosEstructuraEsitem.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Bold);
            this.ckbProyectosEstructuraEsitem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(117)))), ((int)(((byte)(154)))));
            this.ckbProyectosEstructuraEsitem.Location = new System.Drawing.Point(0, 0);
            this.ckbProyectosEstructuraEsitem.Margin = new System.Windows.Forms.Padding(0);
            this.ckbProyectosEstructuraEsitem.Name = "ckbProyectosEstructuraEsitem";
            this.ckbProyectosEstructuraEsitem.Size = new System.Drawing.Size(224, 22);
            this.ckbProyectosEstructuraEsitem.TabIndex = 0;
            this.ckbProyectosEstructuraEsitem.Text = "¿Es este elemento un ìtem?";
            this.ckbProyectosEstructuraEsitem.UseVisualStyleBackColor = true;
            this.ckbProyectosEstructuraEsitem.CheckStateChanged += new EventHandler(ckbProyectosEstructuraEsitem_CheckStateChanged);
            // 
            // dtpProyectosOpcionesFechaIncio
            // 
            this.dtpProyectosOpcionesFechaIncio.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
            this.dtpProyectosOpcionesFechaIncio.CalendarFont = new System.Drawing.Font("Arial", 11.25F);
            this.dtpProyectosOpcionesFechaIncio.Font = new System.Drawing.Font("Arial", 11.25F);
            this.dtpProyectosOpcionesFechaIncio.Location = new System.Drawing.Point(0, 0);
            this.dtpProyectosOpcionesFechaIncio.Margin = new System.Windows.Forms.Padding(0);
            this.dtpProyectosOpcionesFechaIncio.MinDate = new System.DateTime(2013, 8, 14, 0, 0, 0, 0);
            this.dtpProyectosOpcionesFechaIncio.Name = "dtpProyectosOpcionesFechaIncio";
            this.dtpProyectosOpcionesFechaIncio.Size = new System.Drawing.Size(240, 25);
            this.dtpProyectosOpcionesFechaIncio.TabIndex = 0;
            // 
            // dtpProyectosOpcionesFecha
            // 
            this.dtpProyectosOpcionesFecha.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
            this.dtpProyectosOpcionesFecha.CalendarFont = new System.Drawing.Font("Arial", 11.25F);
            this.dtpProyectosOpcionesFecha.Font = new System.Drawing.Font("Arial", 11.25F);
            this.dtpProyectosOpcionesFecha.Location = new System.Drawing.Point(0, 0);
            this.dtpProyectosOpcionesFecha.Margin = new System.Windows.Forms.Padding(0);
            this.dtpProyectosOpcionesFecha.Name = "dtpProyectosOpcionesFecha";
            this.dtpProyectosOpcionesFecha.Size = new System.Drawing.Size(240, 25);
            this.dtpProyectosOpcionesFecha.TabIndex = 0;
            // 
            // cbProyectosOpcionesEstado
            // 
            this.cbProyectosOpcionesEstado.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
            this.cbProyectosOpcionesEstado.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cbProyectosOpcionesEstado.DropDownWidth = 240;
            this.cbProyectosOpcionesEstado.Font = new System.Drawing.Font("Arial", 11.25F);
            this.cbProyectosOpcionesEstado.FormattingEnabled = true;
            this.cbProyectosOpcionesEstado.Items.AddRange(new object[] {
            "Planeacion",
            "Ejecucion",
            "Finalizado"});
            this.cbProyectosOpcionesEstado.Location = new System.Drawing.Point(0, 0);
            this.cbProyectosOpcionesEstado.Margin = new System.Windows.Forms.Padding(0);
            this.cbProyectosOpcionesEstado.Name = "cbProyectosOpcionesEstado";
            this.cbProyectosOpcionesEstado.Size = new System.Drawing.Size(240, 25);
            this.cbProyectosOpcionesEstado.TabIndex = 0;
            ((System.ComponentModel.ISupportInitialize)(this.bsProyectos)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dsPrincipal)).EndInit();
            this.ResumeLayout(false);

        }

        void ckbProyectosEstructuraEsitem_CheckStateChanged(object sender, EventArgs e)
        {
            //if (tvProyectos.SelectedNode.Nodes.Count == 0)
            //{
            //    CheckBox ckb = (CheckBox)sender;

            //}
        }


        public TreeNodeMouseClickEventHandler tvProyectos_TreeNodeMouseClick { get; set; }
    }
}
